import type { InputComponents } from "./interface"
import AutoFormFieldArray from "./AutoFormFieldArray.vue"
import AutoFormFieldBoolean from "./AutoFormFieldBoolean.vue"
import AutoFormFieldDate from "./AutoFormFieldDate.vue"
import AutoFormFieldEnum from "./AutoFormFieldEnum.vue"
import AutoFormFieldFile from "./AutoFormFieldFile.vue"
import AutoFormFieldInput from "./AutoFormFieldInput.vue"
import AutoFormFieldNumber from "./AutoFormFieldNumber.vue"
import AutoFormFieldObject from "./AutoFormFieldObject.vue"

export const INPUT_COMPONENTS: InputComponents = {
  date: AutoFormFieldDate,
  select: AutoFormFieldEnum,
  radio: AutoFormFieldEnum,
  checkbox: AutoFormFieldBoolean,
  switch: AutoFormFieldBoolean,
  textarea: AutoFormFieldInput,
  number: AutoFormFieldNumber,
  string: AutoFormFieldInput,
  file: AutoFormFieldFile,
  array: AutoFormFieldArray,
  object: AutoFormFieldObject,
}

/**
 * Define handlers for specific Zod types.
 * You can expand this object to support more types.
 */
export const DEFAULT_ZOD_HANDLERS: {
  [key: string]: keyof typeof INPUT_COMPONENTS
} = {
  ZodString: "string",
  ZodBoolean: "checkbox",
  ZodDate: "date",
  ZodEnum: "select",
  ZodNativeEnum: "select",
  ZodNumber: "number",
  ZodArray: "array",
  ZodObject: "object",
}
